package com.taobao.auth.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;


/**
 * 解决跨域
 */
@Configuration // 一定不能忽略此注解
public class MyCorsFilter {
    @Bean
    @Order(Ordered.HIGHEST_PRECEDENCE) // 设置为最高优先级
    public CorsFilter corsFilter() {
            // 1. 创建 CORS 配置对象
            CorsConfiguration config = new CorsConfiguration();

            // 使用 allowedOriginPatterns 替代 allowedOrigins，支持通配符模式
            config.addAllowedOriginPattern("*"); // 支持所有域名

            // 是否发送 Cookie 或其他凭据
            config.setAllowCredentials(true);

            // 支持的请求方式
            config.addAllowedMethod("*");

            // 允许的原始请求头部信息
            config.addAllowedHeader("*");

            // 暴露的头部信息
            config.addExposedHeader("*");

            // 2. 添加地址映射
            UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource();
            corsConfigurationSource.registerCorsConfiguration("/**", config);

            // 3. 返回 CorsFilter 对象
            return new CorsFilter(corsConfigurationSource);
    }
}